Unless otherwise indicated herein, the materials described in this section are not prior art to the claims in this application and are not admitted to be prior art by inclusion in this section.
A directory can refer to a storage structure used by cache coherence protocols to keep track of which caches store copies of memory blocks. Tracking can be utilized to ensure correct operation of operating systems and application programs. Unlike cache size, which can grow linearly with the number of cores, the size of the directory can grow quadratically with the number of cores. More specifically, the directory can grow vertically, having more entries to track additional memory blocks that may be cached in the system, as well as horizontally, having more bits to track the increased number of sharers per block. Thus, the directory size can grow much faster than the number of cores or the cache size of each core.
Conventional directory implementations may utilize static random access memory (SRAM). Due to increasing demands on directories resulting from an increasing number of cores on chip, future directory implementations may utilize dynamic random access memory (DRAM) instead of SRAM. However, DRAM can suffer power leaks, and a significant amount of power can be consumed in order to address such power leaks.